A computer program typically spawns one or more processes. A process may be defined as a collection of computing instructions that is separably executed by a processor within a computing environment that usually includes physical memory. Furthermore, within the prior art, there is the concept of a container. A container may encompass or contain all the processes associated with a given computer program. To manage, control, and monitor processes, such functionality can be performed in relation to each individual process, or in relation to the processes encompassed by a given container that is associated with a particular computer program. This can be problematic when what is desired is to manage, control, and monitor groups of processes that are not encompassed by a container associated with a given computer program.
Furthermore, managing, controlling, and monitoring processes can be onerous. For example, it may be desirable to monitor a number of processes, in order to collect performance-related and other types of metrics regarding the processes. Such metrics may only be able to be obtained within kernel memory space, or kernel space, as opposed to user memory space, or user space. Physical memory is either virtually or logically divided into kernel space and user space, where kernel space is the portion of memory that is reserved for running the operating system kernel, kernel extensions, and some device drivers, while user space is where application computer programs are executed. The kernel is the central component of an operating system, and is typically responsible for the system's resources, such as memory and processor utilization.
Therefore, where metrics regarding a number of processes are desired, what may have to occur within the prior art is that a communication be sent from a computing program running in user space across the user space-kernel space boundary and into kernel space to obtain the desired metrics, on a process-by-process basis. For instance, if twenty processes are of interest, then twenty such requests may have to be issued across the user space-kernel space boundary—one request for each process of the workload. Sending communications across the user space-kernel space boundary, however, deleteriously affects the performance of the computing environment in question as a whole. That is, requests sent over the user space-kernel space boundary can be expensive in terms of the computing resources that such requests require.
For all of these reasons, therefore, there is a need for the present invention.